草庐IT

C++ 对和指针

全部标签

java - 有什么方法可以通过 JNI 获取指向 Java 数组的直接指针吗?

我需要通过JNI获取包含Java数组的直接内存地址的指针,而不调用某种复制(即直接访问)。GetArrayElements返回指向复制数组的指针-我需要能够直接从native层修改Java层上的int[]。从jintArray转换为int*成功返回内存地址,但我不确定这是否特别稳定...?这里有什么我可以做的吗...? 最佳答案 您可以使用直接内存(具有native字节顺序)的IntBuffer。在JNI中,您可以将地址用作指针。在Java中,您必须使用get()和put()。 关于ja

C++ 正确用法,this 指针

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:WhenshouldImakeexplicituseofthethispointer?我想知道“this”指针的正确用法。我看到有人创建了一个类构造函数,其中传递的参数变量名为“data”。然而,他已经有一个名为“data”的私有(private)成员变量,因此他只是使用:this->data=data;简单地使用就可以了data=data_in(如果参数名为data_in),无需调用“this”指针和引用成员类型。现在我想知道,这是正确的用法吗?使用this->member来降低命名的复杂性?我的意思是它有

c++ - 从类返回指针。谁负责删除?

我有一个实现二进制兼容接口(interface)(用作共享库)的C++类,因此只返回C类型。作为constchar*的字符串、void指针和指向具有二进制兼容接口(interface)的其他类的指针。问题是我应该如何组织内存管理,我应该返回指向现有类数据的常量指针(用户使用过时指针的危险),然后自己释放内存,或者指向一些堆变量的指针并让用户负责删除这些指针后来,还是???是否有一些通用准则? 最佳答案 在“二进制兼容接口(interface)”中,使用C接口(interface),您不假设共享堆。因此,从堆中分配内存的一方是将其返回

c++ - 2 C++中的维数组指针操作

intmain(){inta[10][10];int**ptr=(int**)a;cout这段代码在我的电脑上的输出是0021FC200021FC200021FC20CCCCCCCC为什么“a”等于“*a”?为什么*a不等于*ptr? 最佳答案 Whyisaequalto*a?当在需要指针的上下文中使用时,数组将被转换为指向其第一个元素的指针。a是数组的数组;所以它会衰减到指向第一个数组的指针。*a是第一个数组,并将衰减为指向该数组中第一个整数的指针。这两者都存在于同一位置,因此这两个指针将具有相等的值。whyisn't*aequa

c++ - 将指针转换为 float ?

我有一个unsignedchar*。通常这指向一大块数据,但在某些情况下,指针是数据,即。将int值转换为unsignedchar*指针(unsignedchar*intData=(unsignedchar*)myInteger;),反之亦然。但是,我需要使用float值来执行此操作,但它一直给我转换错误。unsignedchar*data;floatmyFloat=(float)data;我该怎么做? 最佳答案 位播:templateinlineDestbit_cast(Sourceconst&source){static_ass

不提供模板参数的 C++ 类指针

你好亲爱的地下世界的人们称为互联网。假设我们有一个名为X的类,带有模板参数(Y):templateclassX{//...};我想创建一个没有(还没有)模板参数的类的实例,然后用模板参数定义指针:X*myClass;//....myClass=newX();这有可能吗? 最佳答案 X不是没有模板参数的类型,所以不,不幸的是不是。如果X有一个定义了您想要使用的接口(interface)的基类,您就可以实现您想要的。例如,structInterface{Interface(){}virtual~Interface(){}virtualv

c++ - 指向单个位的 C/C++ 指针类型?

我想修改单个数据位(例如int或char)。我想通过制作一个指针来做到这一点,比如ptr。通过将它分配给一些int或char,然后在递增ptrn次之后,我想访问该数据的第n位。有点像//Ifiwanttochangeallthe8bitsinacharvariablecharc="A";T*ptr=&c;//TisthedatatypeofpointerIwant..intindex=0;for(index;index 最佳答案 C++中没有位指针这样的东西。您需要使用两个东西,一个字节指针和该位的偏移量。这似乎是您在代码中的目标。

c++ - 使用基于范围的 For 循环和 Char 指针字符串

这个问题在这里已经有了答案:Rangebasedforloopsonnullterminatedstrings(3个答案)关闭9年前。我是C++11的新手,坦率地说,我已经一年多没用过C++,所以一开始我有点生疏。我正在根据旧的大学教科书做一些练习,在尝试迭代char指针字符串时遇到了问题(例如:char*c="astring";)。我在谷歌上找不到任何有用的东西。我已经习惯了Java,其中foreach循环可以遍历任何集合。我知道指针是如何工作的,但是我从C++休假让我对实际使用它们的语法一无所知。谁能告诉我为什么以下代码(特别是convert()函数)会导致编译错误,其中“开始”和

c++ - 指向指针数组的指针!如何删除?

所以我有一个指向指针数组的指针!int**matrixPtr;matrixPtr=newint*[5];for(i=0;i我想知道这是否是释放内存的正确方法!for(i=0;i谢谢! 最佳答案 没问题。这是正确的!您以与分配相反的顺序解除分配!我什至认为没有其他方法可以做到这一点。 关于c++-指向指针数组的指针!如何删除?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1871

C++:用共享和弱指针替换原始指针

我的程序遇到了设计问题。我必须管理作为根ChainDescriptor一部分的节点对象。基本上它看起来像下面这样:classChainDescriptor{public:~ChainDescriptor(){//deletethenodesinnodes...}voidaddNode(Node*);Node*getNode();conststd::list&getNodes()const;std::listm_nodes;};classNode{public:Node(Node*parent);voidaddChild(Node*node);Node*getChild(conststd